<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>函数</title>
</head>

<body>
    <script type="text/javascript">
        //alert(123);
        //函数：一堆完成某个特定功能的代码
        //

        //    例子 日常  起床 吃饭 学习 敲代码 睡觉觉

        // 声明函数（定义函数）
        // function 函数名{//一堆代码--函数体}
        // 函数调用  函数名();

        // 声明函数时，函数{中的代码，不会被执行}
        // 调用函数时，才会执行函数{中的代码}

        // 封装了一个打酱油的函数  里面代码在没调用之前是不执行的
        function cook() {
            console.log('打酱油');
            console.log('买酱油');
            console.log('用酱油');
            console.log('吃酱油');
        }
        // 调用（执行封装起来的函数）  直接用函数名称 接上小括号
        cook();

        // 2.声明函数-----表达式方式声明函数
        //函数不取名字，将函数作为一个值（表达式，赋值给一个变量
        // 变量就是函数的名字
        var fn = function() {
            console.log('打酱油');
            console.log('买酱油');
            console.log('用酱油');
            console.log('吃酱油');
        }

        // 3.匿名函数 使用小括号 括起来；表示一个整体
        // 后面加一堆括号，表示函数的调用
        // 匿名函数自调用（立即调用）--特点：只能调用一次
        (function() {
            console.log('打酱油');
            console.log('买酱油');
            console.log('用酱油');
            console.log('吃酱油');
        })();
        // 好处：防止全局变量被污染（污染---值被改变
        var num = 10;

        // 套一层函数自调用 隔离开这部分代码 函数中的var声明的变量
        (function() {
            var num = 100;
            console.log(num);
        })();
        // var num =100;
        // console.log(num);
        console.log(num);
    </script>
</body>

</html>